package com.hf.filedemmo;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;

public class TestDriver {
    public static void main(String[] args) {
        //test01();
        System.out.println("===============================");
        //test02();
        System.out.println("===============================");
        findFiles("E:\\filedemo","tt.exe");
    }

    /**
     * 给定一个目录名，和一个关键字，输出该目录下所有的包含改关键字的文件名信息；【如果有子目录，需要继续处理】
     * @param strFile 目录名
     * @param key 关键字
     */
    public static void findFiles(String strFile,String key){
        //创建文件对象
        File file = new File(strFile);
        //判断是否是目录还是文件
        if (file.isFile()){
            //返回绝对路径
            System.out.println("决定路径："+file.getAbsolutePath());
            return;
        }
        //如果是目录，获取所有文件
        File[] sunFile = file.listFiles();
        for (int i = 0; i < sunFile.length; i++){
            findFiles(sunFile[i].getAbsolutePath(),key);
        }
    }
    /**
     * 文件工具类--File-内部类
     */
    public static void test02(){
        //输入一个目录打印出所有文件
        File file = new File("E:\\filedemo");
        //获取所有文件
        File[] subFile = file.listFiles(new FilenameFilter() {
            /**
             * 匿名内部类
             * @param dir 当前遍历文件所在目录名
             * @param name 遍历的文件名
             * @return
             */
            @Override
            public boolean accept(File dir, String name) {
                //业务逻辑相关处理
                System.out.println(dir+"-------"+name);
                //判断文件名是否相同
                //System.out.println(name.contains("tt"));

                return name.contains("tt");
            }
        });

        File[] subFiles = file.listFiles();

        for (File f : subFiles){
            System.out.println((f.isDirectory() ? "目录：" : "文件:") + f.getAbsolutePath());
        }
    }

    /**
     * 文件工具类--File
     */
    public static void test01(){
        File file = new File("E:/filedemo");
        //判断是文件还是目录
        if (file.isFile()){
            //输出绝对路径
            System.out.println("文件"+file.getAbsolutePath());
        }
        if (file.isDirectory()){
            //输出目录名
            System.out.println("目录"+file.getName());
        }
        //如果文件对象不存在，则创建文件
        if (!file.exists()){
            //如果是目录创建目录，如果是文件创建文件
            if (file.isDirectory()){
                //创建目录
                System.out.println("创建了目录");
                file.mkdirs();
            }else if (file.isFile()){
                try {
                    System.out.println("创建了文件");
                    file.createNewFile();

                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
